Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Fill Datatable from txt file

Îåêßíçóå áðü ôï ìÝëïò alex_VB. Τελευταία δημοσίευση από το μέλος manosB στις 04-06-2010, 10:18. Υπάρχουν 8 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  24-05-2010, 18:37 58795

    Fill Datatable from txt file

    VS 2008 - VB - SQL SERVER 2005

    Καλησπέρα. Έχω το παρακάτω πρόβλημα.

    Χρησιμοποιών StreamReader και την function String.split για να γεμίσω ένα datatable από txt αρχειο (pipe delimited).

    Δεν έχω κάποιο πρόβλημα με το διαχωρισμό ή το γέμισμα του datatable. Το σοβαρό μου πρόβλημα είναι οτι τα ελληνικά γράμματα μου τα καταχωρεί στη βάση κινέζικα. Ξέρει κανείς πως να λύσω αυτό το πρόβλημα?

    Προφανώς το πρόβλημα είναι η κωδικοποίηση του αρχείου γιατί αν το ανοίξω με word και το μετατρέψω σε UTF8 ενημερώνει σωστά.

    Τι πρέπει να κάνω ώστε να μετατρέπεται το txt σε UTF8 πριν ενημερώσει τη βάση?

     

    Ευχαριστώ πάρα πολύ.


    www.myautos.gr
  •  24-05-2010, 19:51 58797 σε απάντηση της 58795

    Απ: Fill Datatable from txt file

    Από default ο StreamReader όταν ανοίγει έχει UTF8. Αυτό λέει το Documentation. Όμως για να μπορείς μέσα από Word να το μετατρέψεις σε UTF8 και να ενημερώσεις σωστά την βάση σου σημαίνει τελικά πως ο StreamReader δεν ανοίγει σε UTF8. Οπότε για δοκίμασε στον Constructor του StreamReader να του δηλώσεις να χρησιμοποιήσει UTF8 και νομίζω ότι θα είσαι μία χαρά.
  •  24-05-2010, 23:10 58798 σε απάντηση της 58797

    Απ: Fill Datatable from txt file

    Το έχουμε πει τόσες φορές ως τώρα, ότι "Ο SQL Server ΔΕΝ ΧΡΕΙΑΖΕΤΑΙ ΚΟΛΠΑ για να υποστηρίξει ελληνικά!". Αν αντιμετωπίζει κανείς πρόβλημα είναι επειδή "κάρφωσε" κάπου κάποιο codepage ή χρησιμοποιεί varchar πεδία αντί για nvarchar. 

    Ή το αρχείο δεν είναι unicode ή η βάση χρησιμοποιεί varchar αντί για nvarchar. Το "κάρφωμα" του UTF8 στον constructor του StreamReader δεν πρόκειται να βοηθήσει αν το αρχείο δεν είναι UTF8 ήδη. Απλά θα δώσει λάθος αποτελέσματα κατά την ανάγνωση του αρχείου.  Το encoding στον constructor δηλώνει το codepage του αρχείου, όχι σε τί θα μετατραπεί αυτό το codepage μετά την ανάγνωση. Τα strings στο .ΝΕΤ είναι πάντα Unicode.

    Τα κινέζικα εμφανίζονται όταν προσπαθείς να εμφανίσεις χαρακτήρα ενός codepage χρησιμοποιώντας λάθος codepage. Αυτό μπορεί να συμβεί αν π.χ. προσπαθήσεις να διαβάσεις αρχείου που φτιάχτηκε σε ελληνικό μηχάνημα από μηχάνημα το οποίο έχει αγγλικό locale. Επίσης μπορεί να συμβεί αν αποθηκεύσεις σε varchar πεδίο με αγγλικό collation ελληνικά δεδομένα. 

    Αν φροντίσεις το αρχείο σου να είναι Unicode και τα πεδία στη βάση nvarchar δεν θα έχεις πρόβλημα.

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  25-05-2010, 12:24 58803 σε απάντηση της 58795

    Απ: Fill Datatable from txt file

    Εικάζω ότι το αρχείο δημιουργείται αυτόματα από τρίτη εφαρμογή σε διαφορετικό encoding  (μάλλον ASCII) Angry

    Άρα πρέπει να ανοίγεις τον streamreader με το κατάλληλο encoding παράμετρο. Εδώ υπάρχουν όλα τα encoding.

    Ένα απλό παράδειγμα πως θα το χρησιμοποιείς
       //Get a new StreamReader in ASCII format from a file 
        StreamReader srAsciiFromFile = 
            new StreamReader("C:\\Temp\\Test.txt",
            System.Text.Encoding.ASCII);
    Καλή τύχη!

    Manos
  •  25-05-2010, 19:33 58816 σε απάντηση της 58795

    Απ: Fill Datatable from txt file

    Γνωρίζω ότι είναι λίγο άσχετο με αυτό που ρωτάς αλλά δοκίμασε το TextFieldParser για να κάνεις import. Θα σε γλιτώσει από αρκετή δουλεία, μπορείς και να περάσεις
    κωδικοποίηση στον κατασκευαστή της κλάσης.

    http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser.aspx

    και ένα παράδειγμα

    http://www.c-sharpcorner.com/uploadfile/samtomato/511/default.aspx


    Μπλουγουράς Γιάννης
    Wizcom O.E.
  •  03-06-2010, 20:21 58959 σε απάντηση της 58803

    Απ: Fill Datatable from txt file

    Σε ευχαριστώ παρα πολύ. Αυτό ήθελε.


    www.myautos.gr
  •  03-06-2010, 20:26 58960 σε απάντηση της 58798

    Απ: Fill Datatable from txt file

    Φίλε Παναγιώτη με εκπλήσεις (πάντα καλοπροαίρετα)

    Σε παρακολουθώ σύχνα και μπορώ να πώ ότι νιώθω πολύ σιγούριά και ασφάλεια ξέροντας ότι είσαι μέλος της κοινότητας και δε περίμενα τέτοια απάντηση από σένα.

    Τα πεδία της βάσης είναι nvarchar και το πρόβλημα είναι στο codepage του txt αρχείου. Η λύση ήταν η δήλωση κωδικοποίησης κατά την δήλωση του Streamreader πράγμα το οποίο δεν ήξερα ότι γίνεται. Δεν ξέρω γιατί όταν γράφω το txt αρχείο με το χέρι αυτό δεν είναι UTF8.

    Σε ευχαριστώ πάρα πολύ για το χρόνο σου, δε μπορείς να φανταστείς πόσες φορές με έχεις βοηθήσει.

     

    Φιλικά,

    Αλέξανδρος

     

     


    www.myautos.gr
  •  04-06-2010, 00:59 58961 σε απάντηση της 58960

    Απ: Fill Datatable from txt file

    Δεν είναι UTF-8 γιατί όταν γράφεις με notepad το default save είναι ANSI. Εάν θέλεις να το αποθηκεύσεις αλλοιώς, κάνεις Save As και επιλέγεις encoding κάτω απο το filename.


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  04-06-2010, 10:18 58963 σε απάντηση της 58961

    Απ: Fill Datatable from txt file

    Panagiotis Kefalidis:

    Δεν είναι UTF-8 γιατί όταν γράφεις με notepad το default save είναι ANSI. Εάν θέλεις να το αποθηκεύσεις αλλοιώς, κάνεις Save As και επιλέγεις encoding κάτω απο το filename.


    On a sidenote είναι απαράδεκτο ακόμα να μην είναι default το encoding στο notepad Unicode αλλά να πρέπει κάθε φορά να το αλλάζει ς σε κάθε save. Είναι απαράδεκτο το 2010 να μην μπoρούμε να σώνουμε default σε unicode!!!!!!

    Το αστείο είναι ότι εκτός από κάτι χακιές στο registry δεν μπορείς να αλλάξεις το default encoding του notepad!!!!

    Manos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems